package com.ruoyi.clinic.service;

import java.util.List;

import com.ruoyi.clinic.domain.ClinicOrgInfo;
import com.ruoyi.clinic.dto.clinicorg.*;
import com.ruoyi.common.core.domain.entity.SysUser;

/**
 * 机构信息Service接口
 *
 * @author zhangjinfei
 * @date 2025-11-22
 */
public interface IClinicOrgInfoService {
    /**
     * 查询机构信息
     *
     * @param orgId 机构信息主键
     * @return 机构信息
     */
    public ClinicOrgInfo selectClinicOrgInfoByOrgId(Long orgId);

    /**
     * 查询机构信息列表
     *
     * @param clinicOrgInfo 机构信息
     * @return 机构信息集合
     */
    public List<ClinicOrgInfo> selectClinicOrgInfoList(ClinicOrgInfo clinicOrgInfo);

    /**
     * 查询机构详情
     *
     * @param orgId   机构ID
     * @param sysUser 当前登录用户
     * @return 机构详情
     */
    ClinicOrgDetailDTO queryClinicDetail(Long orgId, SysUser sysUser);

    /**
     * 机构列表分页查询
     *
     * @param dto     前端传入参数
     * @param sysUser 当前登录用户
     * @return 集合
     */
    List<ClinicOrgResDTO> queryPageList(ClinicOrgReqDTO dto, SysUser sysUser);

    /**
     * 分页查询我的负责的机构
     *
     * @param dto     前端传入参数
     * @param sysUser 当前登录用户
     * @return 集合
     */
    List<ClinicOrgResDTO> queryMyOrgPageList(ClinicOrgReqDTO dto, SysUser sysUser);

    /**
     * 导入机构数据
     *
     * @param importDTOList 导入集合
     * @param updateSupport 是否需要更新
     * @param sysUser       当前登录用户
     * @return 错误消息
     */
    String importData(List<ClinicOrgImportDTO> importDTOList, boolean updateSupport, SysUser sysUser);

    /**
     * 导入我负责的机构数据
     *
     * @param importDTOList 导入集合
     * @param updateSupport 是否需要更新
     * @param sysUser       当前登录用户
     * @return 错误消息
     */
    String importMyOrgData(List<ClinicOrgImportDTO> importDTOList, boolean updateSupport, SysUser sysUser);

    /**
     * 新增机构信息
     *
     * @param dto 机构信息
     * @return 结果
     */
    public int insertClinicOrgInfo(ClinicOrgUpdateDTO dto);

    /**
     * 修改机构信息
     *
     * @param clinicOrgInfo 机构信息
     * @return 结果
     */
    public int updateClinicOrgInfo(ClinicOrgUpdateDTO dto);

    /**
     * 批量删除机构信息
     *
     * @param orgIds 需要删除的机构信息主键集合
     * @return 结果
     */
    public int deleteClinicOrgInfoByOrgIds(String orgIds);

    /**
     * 删除机构信息信息
     *
     * @param orgId 机构信息主键
     * @return 结果
     */
    public int deleteClinicOrgInfoByOrgId(Long orgId);
}
